(function (a) {
  a.fn.wpSuperSnow = function (g) {
    var q, h, r, b, s, n, f, t, m, l = a("head"), o = a("body"), p, u, d, k = {
          flakes: [],
          totalFlakes: 50,
          zIndex: 999999,
          maxSize: 50,
          maxDuration: 25,
          useFlakeTrans: false
        }, c = ["wpSuperSnowFlake_l", "wpSuperSnowFlake_r"],
        j = ["wpSuperSnow_l", "wpSuperSnow_r"];
    g = a.extend({}, k, g);
    if (!g.flakes.length) {
      return this
    }
    if (a.wpSuperSnowCSS) {
      l.append('<style type="text/css">' + a.wpSuperSnowCSS
          + "</style>"), a.wpSuperSnowCSS = ""
    }
    var e = function (v, i) {
      v = (typeof v === "number") ? v : 0;
      i = (typeof i === "number") ? i : Number.MAX_VALUE;
      return Math.floor(Math.random() * (i - v + 1)) + v
    };
    return this.each(function () {
      p = a(this), u = "fixed";
      if (a.inArray(p[0].nodeName.toLowerCase(), ["html", "body"]) === -1) {
        p.css({position: "relative", overflow: "hidden"}), u = "absolute"
      }
      d = [0, 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10];
      for (p = a(this), q = 1; q <= Number(g.totalFlakes); q++) {
        h = e(0, 100);
        r = e(1, 9);
        n = e(1, Number(g.maxSize));
        b = e(Math.floor(Number(g.maxDuration) / 5), Number(g.maxDuration));
        s = (d.length) ? d.shift() : e(0, Math.floor(b / 5));
        t = g.flakes[e(0, g.flakes.length - 1)];
        f = (t.indexOf("flake") !== -1) ? c[e(0, c.length - 1)] : j[e(0,
            j.length - 1)];
        m = a('<div class="wp-super-snow-flake"><img src="' + t + '" /></div>');
        m.css({
          width: n + "px",
          height: n + "px",
          position: u,
          "z-index": Number(g.zIndex),
          left: h + "%",
          top: "-200px",
          opacity: "0",
          "user-select": "none",
          "-webkit-user-select": "none",
          "-moz-user-select": "none",
          "-ms-user-select": "none",
          "backface-visibility": "visible",
          "-webkit-backface-visibility": "visible",
          "-moz-backface-visibility": "visible",
          "-ms-backface-visibility": "visible",
          animation: f + " " + b + "s infinite",
          "animation-delay": s + "s",
          "-webkit-animation": f + " " + b + "s infinite",
          "-webkit-animation-delay": s + "s",
          "-moz-animation": f + " " + b + "s infinite",
          "-moz-animation-delay": s + "s",
          "-ms-animation": f + " " + b + "s infinite",
          "-ms-animation-delay": s + "s"
        }), a("img", m).css({
          width: "100%",
          height: "auto",
          border: 0,
          opacity: (g.useFlakeTrans) ? "." + r : 1
        });
        p.append(m)
      }
    })
  };
  a.wpSuperSnowCSS = "@keyframes wpSuperSnow_l {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; transform:translate3D(500px,1500px,0) rotate(250deg);}}";
  a.wpSuperSnowCSS += "@keyframes wpSuperSnow_r {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; transform:translate3D(-500px,1500px,0) rotate(-500deg);}}";
  a.wpSuperSnowCSS += "@-webkit-keyframes wpSuperSnow_l {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -webkit-transform:translate3D(500px,1500px,0) rotate(250deg);}}";
  a.wpSuperSnowCSS += "@-webkit-keyframes wpSuperSnow_r {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -webkit-transform:translate3D(-500px,1500px,0) rotate(-500deg);}}";
  a.wpSuperSnowCSS += "@-moz-keyframes wpSuperSnow_l {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -moz-transform:translate3D(500px,1500px,0) rotate(250deg);}}";
  a.wpSuperSnowCSS += "@-moz-keyframes wpSuperSnow_r {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -moz-transform:translate3D(-500px,1500px,0) rotate(-500deg);}}";
  a.wpSuperSnowCSS += "@-ms-keyframes wpSuperSnow_l {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -ms-transform:translate3D(500px,1500px,0) rotate(250deg);}}";
  a.wpSuperSnowCSS += "@-ms-keyframes wpSuperSnow_r {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -ms-transform:translate3D(-500px,1500px,0) rotate(-500deg);}}";
  a.wpSuperSnowCSS += "@keyframes wpSuperSnowFlake_l {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; transform:translate3D(500px,1500px,0) rotateY(720deg) rotate(250deg);}}";
  a.wpSuperSnowCSS += "@keyframes wpSuperSnowFlake_r {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; transform:translate3D(-500px,1500px,0) rotateY(-720deg) rotate(-500deg);}}";
  a.wpSuperSnowCSS += "@-webkit-keyframes wpSuperSnowFlake_l {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -webkit-transform:translate3D(500px,1500px,0) rotateY(720deg) rotate(250deg);}}";
  a.wpSuperSnowCSS += "@-webkit-keyframes wpSuperSnowFlake_r {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -webkit-transform:translate3D(-500px,1500px,0) rotateY(-720deg) rotate(-500deg);}}";
  a.wpSuperSnowCSS += "@-moz-keyframes wpSuperSnowFlake_l {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -moz-transform:translate3D(500px,1500px,0) rotateY(720deg) rotate(250deg);}}";
  a.wpSuperSnowCSS += "@-moz-keyframes wpSuperSnowFlake_r {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -moz-transform:translate3D(-500px,1500px,0) rotateY(-720deg) rotate(-500deg);}}";
  a.wpSuperSnowCSS += "@-ms-keyframes wpSuperSnowFlake_l {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -ms-transform:translate3D(500px,1500px,0) rotateY(720deg) rotate(250deg);}}";
  a.wpSuperSnowCSS += "@-ms-keyframes wpSuperSnowFlake_r {0% {opacity:0;} 25% {opacity:1;} 100% {opacity:0; -ms-transform:translate3D(-500px,1500px,0) rotateY(-720deg) rotate(-500deg);}}"
})(jQuery);
